1. 题目描述(中等难度)

[warning] 71. 简化路径

2. 解法一: 栈

解题思路

分割字符串之后根据每种情况进行判定,.和``就不用管,直接跳过,..就代表着返回上一级,即弹出队尾元素(要注意判空) 其他情况直接压入队列就行。

也可以用一个数组来维护。

class Solution {
    public String simplifyPath(String path) {
     String[] pathStr =  path.split("/");
     Deque<String> deque = new ArrayDeque<>();
     for(String s: pathStr){
         if(s.equals("") || s.equals(".")){
             continue;
         }
         else if(s.equals("..")){
           if(!deque.isEmpty()){
               deque.pollLast();
           }
         }
         else{
             deque.offerLast(s);
         }
     }
     StringBuilder sb = new StringBuilder();
     for(String ans : deque){
       sb.append("/");
       sb.append(ans);
     }
     if(sb.toString().equals("")){
         return "/";
     }
     return sb.toString();
    }
}
© gaohueric all right reserved,powered by Gitbook文件修订时间: 2021-12-08 23:22:22

results matching ""

    No results matching ""